home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / hp48_2 / safe_pur < prev    next >
Text File  |  1995-03-31  |  5KB  |  146 lines

  1. Note:  When Jason wrote this he forgot that the 48 can already undo the
  2. last purge, but this one will work even if you do more calculation in 
  3. between.
  4.     - Wayne
  5.  
  6. From HP-48@VM1.NoDak.EDU  Mon Nov  5 16:13:30 1990
  7. Received: from vm1.NoDak.edu by en.ecn.purdue.edu (5.61/1.28jrs)
  8.     id AA15574; Mon, 5 Nov 90 16:13:30 -0500
  9. Message-Id: <9011052113.AA15574@en.ecn.purdue.edu>
  10. Received: from NDSUVM1.BITNET by VM1.NoDak.EDU (IBM VM SMTP R1.2.1MX) with BSMTP id 5499; Mon, 05 Nov 90 15:10:20 CST
  11. Received: from NDSUVM1.BITNET by NDSUVM1.BITNET (Mailer R2.07) with BSMTP id
  12.  2048; Mon, 05 Nov 90 15:10:17 CST
  13. Date:         Mon, 5 Nov 90 15:46:29 EST
  14. Reply-To: HP-48 - HP-48sx Hand Held System <HP-48@VM1.NoDak.EDU>
  15. Sender: HP-48 - HP-48sx Hand Held System <HP-48@VM1.NoDak.EDU>
  16. From: "Jason P. Meyers (HP-48 list owner)" <JMEYERS%MTUS5.BITNET@VM1.NoDak.EDU>
  17. Subject:      Safe Purger!
  18. To: Multiple recipients of list HP-48 <HP-48@NDSUVM1>
  19. Status: OR
  20.  
  21. Dear fellow list members,
  22.  
  23.    In my opinion, HP left out a very important feature: "Unpurge".  If I
  24. accidently mess up the stack, I can press LAST STACK and all is fine.
  25. However, if I purge a variable, there is no such thing.  That is why  I
  26. have created the following two programs.  They are both very similar and
  27. do essentially the same thing, except that the second one is a more
  28. powerful version of the first one.
  29.  
  30.    My idea was to store what ever it is that you purge into a temporary
  31. variable so that if you accidently purged the wrong variable, you still
  32. have a second chance at recovering it.   Obviously, like the LAST commands
  33. this takes up some memory (ammount of which depends on what you purge).
  34. To further help matters, I have assigned the program to my PURGE key.
  35.  
  36.    Both programs have the same input specifications as the normal PURGE
  37. command.  The difference being that a copy of what is purged is stored
  38. in the variable 'TVAR' in your HOME directory.  The program will work
  39. within any directory and will always use the 'TVAR' in the HOME directory.
  40. This prevents the calculator from being cluttered with 'TVAR' variables.
  41. The program will not change the current working directory.
  42.  
  43. Here is the first version of the program:
  44.  
  45. Name:  SPURGE (SafePURGE)
  46.  
  47. Usage:  Enter the same argument that you would use with PURGE.
  48. Results:  If you purge a single variable (either tagged or not tagged)
  49.           then the contents of the variable is stored in 'TVAR' in the
  50.           HOME directory (thus purging the previous value of 'TVAR')
  51.           and purge the original variable.  However, if the argument is
  52.           a list of variables to be purged or if you purge the PICT then
  53.           the item is purged without preserving a copy of it and the old
  54.           value of 'TVAR' remains unchanged.
  55.  
  56. Downloadable program:
  57.  
  58. -------------------8<------------------8<------------------8<---------
  59. %%HP: T(3)A(R)F(.);
  60. \<< DUP TYPE \-> n t
  61.   \<<
  62.     IF t 12 ==
  63.     THEN n OBJ\->
  64. DROP TYPE 't' STO
  65.     END
  66.     IF t 5 == t 19
  67. == OR
  68.     THEN n PURGE
  69.     ELSE PATH n RCL
  70. n PURGE HOME 'TVAR'
  71. STO EVAL
  72.     END
  73.   \>>
  74. \>>
  75. -------------------8<------------------8<------------------8<--------
  76.  
  77.  
  78. Here is the second version of the program:
  79.  
  80. Name:  SPURGE2  (SafePURGE II)
  81.  
  82. Usage:  Identical to SPURGE
  83. Results:  The only difference is that SPURGE2 will save the values of
  84.           variables that are purged as a group using a list or variable
  85.           names.  The values of all of the variables will be put into
  86.           a list in the order in which they appeared in the purging list
  87.           and that list is stored in 'TVAR'.  NOTE:  The list should only
  88.           contain variable names (not tagged) and nested lists are not
  89.           supported.  If the list contains elements that are not un-
  90.           tagged variable names, everything in the list will be purged;
  91.           however, only the values of the untagged variables will be saved
  92.           in the list in 'TVAR'.
  93.  
  94. Program in downloadable format:
  95.  
  96. -------------------8<------------------8<------------------8<--------
  97. %%HP: T(3)A(R)F(.);
  98. \<< DUP TYPE \-> n t
  99.   \<<
  100.     IF t 12 ==
  101.     THEN n OBJ\->
  102. DROP TYPE 't' STO
  103.     END
  104.     IF t 19 ==
  105.     THEN n PURGE
  106.     END
  107.     IF t 5 ==
  108.     THEN { } 'TVAR'
  109. STO n OBJ\-> \-> q
  110.       \<< q DROPN 1 q
  111.         FOR j n j
  112. GET DUP
  113.           IF TYPE 6
  114. ==
  115.           THEN DUP
  116. RCL 'TVAR' STO+
  117. PURGE
  118.           ELSE
  119. PURGE
  120.           END
  121.         NEXT
  122.       \>>
  123.     END
  124.     IF t 6 ==
  125.     THEN PATH n RCL
  126. n PURGE HOME 'TVAR'
  127. STO EVAL
  128.     END
  129.   \>>
  130. \>>
  131. -------------------8<------------------8<------------------8<--------
  132.  
  133. Either one of these programs can be attached to the PURGE key with a
  134. command that looks something like the following:
  135.  
  136. << PROGRAM >> 54.2 ASN
  137.  
  138. where << PROGRAM >> is the program that you want to attach to the PURGE
  139. key.  If anyone has specific questions about the programs, please e-mail
  140. me directly.
  141.  
  142. Sincerely,
  143. Jason P. Meyers
  144. JMEYERS@MTUS5.BITNET
  145.  
  146.